# #输入两个日期，计算两个日期之间相差的天数
# import time
# date_time1 = "2021-08-01"
# date_time2 = "2021-08-07"
# #先转化为两个日期对应的数值
# date1 = time.mktime(time.strptime(date_time1,'%Y-%m-%d'))
# date2 = time.mktime(time.strptime(date_time2,'%Y-%m-%d'))
# print(date1)
# print(date2)
# count_days = int((date2 - date1)/(24*60*60))
# print(count_days)


#输入一个数字n，计算n天之前是什么日期，输出日期形式为"2021-07-27"
import datetime
import time
d1 = datetime.datetime.now()
n = int(input("请输入一个数字:"))
d2 = d1 - datetime.timedelta(days = n)
print(d2)

#3.
import os
size = 0
# 用列表存储文件夹路径
lst = ["F:\笔记\zuoye"]

path1 = lst.pop()

# 返回 path1 文件夹内所有的文件名列表
name_list = os.listdir(path1)
print(name_list)
for name in name_list:
    # 将得到的文件名跟文件夹拼接成完整路径
    path2 = os.path.join(path1, name)
    # 计算文件夹大小
    size += os.path.getsize(path2)
print(size)


1、如何判断一个对象是可迭代对象，迭代器或者生成器？
  可迭代对象：如果该对象实现了__iter__方法并且返回了一个迭代器，这样的对象我们称之为可迭代对象。
  迭代器：任何实现了__iter__方法和__next__方法的我们都称之为迭代器
  生成器：任何生成器都是迭代器，但迭代器不一定是生成器，有yield关键字的，称之为生成器

2、迭代器与生成器的区别？
  异：
    任何生成器都是迭代器，但迭代器不一定是生成器
  同：
    都是以一种懒加载的模式生成值，调用的时候才生成值返回，不调用的时候就处于休眠状态等待下一次调用

3、可迭代对象与迭代器的区别？
  可迭代对象不一定是迭代器，但是迭代器里面都是可迭代对象，因为可迭代对象只实现了__iter__方法而迭代器需要同时实现__iter__方法跟__next方法
  因此可迭代对象与迭代器处于一种被包含与包含的关系

4、如何定义一个生成器？
  使用()生成generator-->生产者 ，将两表推导式的[]列表改成()元组即可得到生成器

5、如何获取可迭代对象、迭代器与生成器中的数据
  可迭代对象：使用循环遍历即可获得可迭代对象里面的数据（str tuple dict list sorted等等容器对象都是可迭代对象）
  迭代器：使用__next__方法返回迭代器中的数据，一次返回一个，如果容器中没有更多的元素那么会抛出StopIteratin异常
  生成器：使用yield关键字获取生成器中的数据，当生成器遇到yield的时候，会暂停运行生成器并且返回yield后面的值
